import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;





public class monthly {

	// main()메소드
	public static void main(String[] args) {    
	        
	        //[0] 현재 달을 출력
	      monthly.getMonthGalendar();    
	     
	       
	        
	        //[0] 년도와 월을 넘겨주고 해당 달력을 출력
	        //monthly.getMonthGalendar(getSysyear(), getSysmonth());         
	     // monthly.getMonthGalendar(inputYear, inputMonth);    
	        
	        
	    }//main()--------------------

	
	// 어떤 클래스에서도 현재달을 출력할수 있도록 Static으로 선언
	
	public static void getMonthGalendar() {
		Calendar cal = Calendar.getInstance(); // 캘린더 객체 생성
		int thisYear = cal.get(Calendar.YEAR); // 현재 년
		int thisMonth = cal.get(Calendar.MONTH) + 1; // 현재 달

		getMonthGalendar(thisYear, thisMonth); // 현재달의 달력을 출력
  // 겟 인스턴스는 뭔가 ? 밑에는 왜 반복 하는가?
	}// getMonthGalendar()--------------------------

	// 어떤 클래스에서도 년도와 월을 넘겨주면 호출할수있도록 Static으로 선언
	public static void getMonthGalendar(int intYear, int intMmonth) {

		Calendar cal = Calendar.getInstance();

		int thisYear = cal.get(Calendar.YEAR); // 현재 년
		int thisMonth = cal.get(Calendar.MONTH) + 1; // 현재 달
		int today = cal.get(Calendar.DATE); // 오늘 일자 저장
         // 이것은 왜 하는가?
		boolean booToday = (intYear == thisYear) && (thisMonth == intMmonth);

		cal.set(intYear, intMmonth - 1, 1); // 캘린더객체에 입력받은 년, 달, 그리고 Date을 1로설정

		int sDayNum = cal.get(Calendar.DAY_OF_WEEK); // 1일의 요일 얻어오기
		int endDate = cal.getActualMaximum(Calendar.DATE); // 달의 마지막일 얻기

		// 콘솔 출력
		// System.out.println("startDATE="+cal.get(Calendar.DATE));
		// System.out.println("sDayNum="+sDayNum);
		// System.out.println("endDate="+endDate);

		int nowYear = cal.get(Calendar.YEAR);
		int nowMonth = cal.get(Calendar.MONTH);

		System.out.println("===================== " + nowYear + "년  "
				+ (nowMonth + 1) + "월 ==================");

		// 요일명 출력
		System.out.println(" 일\t 월\t 화\t 수\t 목\t 금\t 토\t");
		System.out
				.println("====================================================");
		// 1일이 시작되는 이전의 요일 공백으로 채우기

		int intDateNum = 1; // 출력할 date를 저장할 변수

		for (int i = 1; intDateNum <= endDate; i++) { // 출력한 Date
														// 변수(intDateNum)가 1일부터
														// 마지막일이 될때까지 반복.

			if (i < sDayNum)
				System.out.printf("%3s\t", "★"); // i가 요일숫자보다 작으면 공백으로 채우기
			else {
				if (booToday && intDateNum == today)
					System.out.printf("[%2d]\t", intDateNum); // 오늘 날짜 표시
				else
					System.out.printf("%3d\t", intDateNum); // 일반 출력

				intDateNum++; // 출력할 date 증가.
			}
			if (i % 7 == 0)
				System.out.println(); // i가 7의배수가 되면 줄바꿈.

		}// for-----------------
		System.out.println();

	}// getMonthGalendar(int intYear, int intMmonth) --------------------


}//
